package cn.iocoder.yudao.module.scenic.dal.mysql.trip;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.scenic.controller.admin.trip.vo.TripPageByLocationReqVO;
import cn.iocoder.yudao.module.scenic.controller.admin.trip.vo.TripPageByLocationResVO;
import cn.iocoder.yudao.module.scenic.controller.admin.trip.vo.TripPageReqVO;
import cn.iocoder.yudao.module.scenic.controller.app.road.vo.RoadTripVO;
import cn.iocoder.yudao.module.scenic.dal.dataobject.trip.TripDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 线路 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface TripMapper extends BaseMapperX<TripDO> {

    default PageResult<TripDO> selectPage(TripPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<TripDO>()
                .likeIfPresent(TripDO::getName, reqVO.getName())
                .eqIfPresent(TripDO::getDescription, reqVO.getDescription())
                .eqIfPresent(TripDO::getDeptId, reqVO.getDeptId())
                .betweenIfPresent(TripDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(TripDO::getId));
    }

    List<RoadTripVO> findByDeptId(Long deptId);

    IPage<TripPageByLocationResVO> selectTripListByCondition(IPage<TripPageByLocationResVO> allPage,  @Param("reqVo")  TripPageByLocationReqVO pageReqVO);
}